package com.pcl;

import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 1. List 添加，删除（i,object）、读取、排序、遍历
 *
 * @author 潘春龙
 * @title: ProjectOne
 * @projectName learn-git-testing
 * @description: TODO
 * @date 2022/2/17
 */
@Slf4j
public class ProjectOne {

  /**
   *
   * 初始化代码
   * @return List
   */
  public static List<Integer> initialize() {
    //初始化数组
    Integer [] listItem = {1,4,2,7,5,8,6};
    return new ArrayList<>(Arrays.asList(listItem));

  }

  /**
   *
   * 增加数组，oldList原数组，要增加的值
   * @param oldList
   * @param addItem
   * @return list
   */
  public static List<Integer> listOperate(List<Integer> oldList, Integer addItem) {
    //首先要判断oldList中是否存在数组（这里不写了）
    //增加数组
    oldList.add(addItem);
    //定义新数组
    List<Integer> list = new ArrayList<>();
    //将数组添加到新定义的数组中
    list.addAll(oldList);
    return list;
  }

  /**
   * 遍历数组
   * @param integerList
   * */
  public static void traversalList(List<Integer> integerList) {
    for (int i = 0; i < integerList.size(); i++) {
      log.info(integerList.get(i)+",");
    }
  }

  /**
   * 数组排序
   * */
  public static List<Integer> sortList(List<Integer> integerList) {
    if(integerList.size() != 0 ) {
      Collections.sort(integerList);
    }

    return integerList;
  }

  /**
   * 删除数组,oldList数组，itemId要删除的索引值
   * @param oldList
   * @param itemId
   * @return list
   * */
  public static void remoteItem(List<Integer> oldList, Integer itemId) {


        //首先要判断oldList中是否存在数组（这里不写了）
        //判断数组中的值是否被移除
        oldList.remove(itemId);
        for (int i = 0; i < oldList.size(); i++) {
          log.info(oldList.get(i)+",");
        }
  }

  public static void main(String[] args) {
    /**
     *  遍历数组
     * */
    log.info("数组的内容：");
    traversalList(initialize());
    /**
     *  增加数组
     * */
    log.info("增加数组：");
    traversalList(listOperate(initialize(),99));

    /**
     *  排序数组
     * */
    log.info("数组排序后的内容：");
    traversalList(sortList(initialize()));

    /**
     * 删除数组中某个数据
     * */
    log.info("删除数组的下标：");
    remoteItem(initialize(),5);
  }
}
